/**
 * 数组练习：
 * */

function Person(name, age) {
    this.name = name;
    this.age = age;
}

/**修改Person原型的toString*/
Person.prototype.toString = function () {
  return "Person[name="+this.name+", age="+this.age+"]";
};

/**使用构造方式创建一个对象*/
var person1 = new Person("孙悟空", 18);
var person2 = new Person("猪八戒", 28);
var person3 = new Person("红孩儿", 8);
var person4 = new Person("二郎神", 38);
var person5 = new Person("唐僧", 16);
var person6 = new Person("三太子", 48);

var arr = [person1, person2, person3, person4, person5, person6];

function getAdult(arr) {
    // 创建一个新的数组
    var newArr = [];

    for(var i = 0; i < arr.length; i++) {
        if(arr[i].age > 18) {
            newArr.push(arr[i]);
        }
    }

    return newArr;
}

var result = getAdult(arr);

console.log(result);
var newNArr = [];
arr.forEach(function (value, index) {

    if(value.age > 18){
        newNArr.push(value);
    }
});
console.log("使用forEach循环遍历： " + newNArr);

console.log("-----------------------forEach-----------------------");

/**
 * 一般我们都是使用for循环去遍历数组，Js中还为我们提供了一个方法，用来遍历数组
 * forEach(); 这个方法只支持IE8以上的浏览器
 * forEach();方法需要一个函数作为参数
 *  - 像这种函数：由我们创建但是不由我们调用的，我们称为回调函数
 *  - 数组中有几个元素这个函数就会执行多少次，每次执行时，浏览器会将遍历到的元素，以实参的形式传递进来
 *
 *  浏览器会在回调函数中传递三个参数：
 *      第一个参数就是当前正在遍历的元素
 *      第二个参数就是当前正在遍历的元素的索引
 *      第三个参数就是当前正在遍历的数组
 * */


var nArr = ["松江", "吴用", "卢俊义"];

console.log(nArr.length);

nArr.forEach(function (value, index, obj) {
    console.log(value, index, obj);
});


